The nonvolatility of magnetic disk drives ("hard" drives) is one of the primary reasons for their use as mass storage devices in computer systems. They may be turned on and off without loss of data. Hard drives include one or more circular platters. Data is stored on concentric tracks of magnetic media on the platters. Each track is further divided into sectors. A sector of data is typically 512 bytes in size.
A hard drive controller typically receives sector numbers from a host processor (e.g., central processing unit or CPU). These sector numbers are then translated to a physical location for accessing the hard drive to obtain a sector of data. A given sector number generally always corresponds to the same physical location on the hard drive. In other words a unique one-to-one mapping exists between sector numbers and physical locations within the hard drive.
A typical user file stored on a hard drive occupies many sectors distributed within the disk drive. These sectors can be distributed across multiple tracks and platters. In addition, the sectors used by the user file may not be contiguous sectors within a track.
Hard drives suffer from a number of disadvantages including sensitivity to vibration, dust, humidity, and sudden changes in velocity. Hard drives also consume relatively large amounts of power, which makes them less attractive for computers that are battery powered.
Solid state disks provide an alternative to magnetic hard disk drives. Solid state disks (also "solid state drives") use semiconductor memories, also referred to as solid state memories, as a storage medium. Semiconductor memories are comparatively more rugged than hard drives and offer the advantage of being much less sensitive to vibration, dust, humidity, and sudden changes in velocity. Semiconductor memories also tend to require less power than a typical hard drive with similar storage capacity.
One type of nonvolatile semiconductor memory is the flash electrically erasable programmable read only memory ("flash EEPROM" or simply "flash memory"). Flash memories can be programmed by the user and once programmed retain their data until erased. Flash memories are erased by erasing a block of memory at a time. Erasing a flash memory tends to require considerably more time than reading or programming operations.
Some prior art solid state disks use flash memory. Unlike the hard drive, a sector number provided by the host CPU may not correspond to the same physical address for accessing a location within the solid state drive due to the limitations in erasing and programming a flash memory device. In one embodiment, sectors of data are written to available locations instead of a unique location within the flash memory in order to defer an erase operation. Thus the sector number becomes a "logical" sector number as opposed to a physical sector number identified with a unique address. This technique requires version control and additional overhead including translation and index tables for locating the physical address within the flash memory that corresponds to a logical sector number. Without the translation and index tables the data may not be retrievable even though it is still stored in the nonvolatile memory.
Although the solid state memories are relatively immune to environmental factors that negatively affect hard drives, solid state memories have their own shortcomings. Unlike a magnetic hard drive, semiconductor memories such as flash memory suffer charge loss over time. The charge on the floating gate of a flash cell may dissipate due to, for example, leakage. This charge loss may cause a change in the interpreted state of the flash cell which in turn results in data loss. Typically charge loss is not due to a permanent defect and although the data is lost, the cell is not permanently damaged and can be used for future storage. Thus the charge loss problem can be termed a temporary defect.
Another disadvantage of semiconductor memories is failure due to column shorts. Memory arrays are arranged in rows and columns. Typically the rows are associated with "words" of memory and the columns correspond to bitlines (or "bit lines") which represent "bits". If one or more bitlines are electrically shorted together, possibly during the manufacturing process, the result is a column short. A column short permanently affects all shorted bitlines and can essentially render useless the sensing of every bit associated with a shorted bitline for every word in at least one block of the array.
One disadvantage of using logical sector numbers is that if the overhead data such as the translation or index tables become corrupted such as from charge loss or column shorts, the data may not be retrievable because it cannot be located.
Thus improving the error management for both column shorts and charge loss within a solid state disk drive is desirable.